查看原文
其他

Lyft 团队新突破 | 借助 Android Vitals 缩短启动时间,提高用户体验

The following article is from Android 开发者 Author Android

作者 / 产品营销经理 Mauricio Vergara,且由 Thousand Ant 提供支持。


Lyft 致力于打造优秀的应用。作为一家网约车公司,Lyft 需要确保为数千万乘客和数十万司机提供时效性强的服务。因为市场规模巨大,应用的每一次运行缓慢、卡顿或崩溃都会浪费数千名用户的时间。即使一个小问题也可能带来不少用户流失。幸运的是,Lyft 的开发团队一直密切关注应用性能,这也帮助他们第一次注意到司机端 Android 应用启动变慢的问题。

他们要迅速找到问题的根源并提出解决方案,向领导层证明这一投入是值得且合理的。这意味着团队需要回答一些棘手的问题: 新方案瓶颈在哪里、如何影响用户体验以及对团队有多重要。值得庆幸的是,他们有一个强大的工具可以帮助他们找到答案。在 Android Vitals (可以提高 Android 设备应用稳定性和性能的 Google Play 工具) 的帮助下,他们确定了问题所在,也就有了充分理由说服领导层将其提上日程并投入相应的资源。接下来我们将为您介绍详细方法: 

  • Android Vitals
    https://play.google.com/console/about/vitals/

调整优先级



Lyft 开发团队首先要弄清楚这个问题的紧迫性,以便于说服领导层为其投入资源。加快 Lyft Driver 的启动时间,与任何提高应用质量的建议一样,都需要在开发者精力有限的前提下,在各种需求间相互权衡,譬如引入新的功能、优化系统架构或改善数据科学。通常来说,优化性能很难与业务指标相关联,这是说服领导层为其投入资源的挑战之一。

而 Android Vitals 可以帮助他们准确定位关键问题。Vitals 允许开发者访问其应用的相关性能数据,包括应用无响应 (ANR) 错误、电池电量消耗、渲染和应用启动时间。每个指标的当前和历史性能数据都基于真实设备反馈,还可以与同类别中其他应用的性能进行比较。开发团队借助 Android Vitals 发现了一个紧迫问题: Lyft Driver 应用的启动时间比其它 10 个同类应用慢 15-20%。

  • 应用启动时间
    https://support.google.com/googleplay/android-developer/answer/9844486

接下来,团队需要为项目确定合适的改进目标,即启动缓慢对业务目标与用户体验的影响需要相匹配。Android Vitals 为应用提供了在网约车行业中与其他同类应用的直接对比数据,清楚地表明了这一点。开发团队推测: 一位开发者花费一个月的时间研究该问题,就足以显著缩短应用启动时间。

利用 Android Vitals 提供的丰富数据,团队积极响应 Lyft 对构建优秀应用的承诺,向领导层展示了改善客户体验的时机、合理范围、可实现的目标以及明确的竞争策略,在如此充分的理由下他们获得了批准。


实现方法



Lyft 使用 "交互时间" (也被称为完全显示所用时间) 作为主要的启动时间指标。Lyft 团队分析了应用的每个发布阶段,寻找影响它的因素。Lyft Driver 应用启动分四个阶段: 1) 启动应用进程 2) "Activity" 启动界面渲染。3) "Bootstrap" 发送网络请求以获取渲染主屏幕所需的数据。4) "Display" 打开 Driver 应用的界面。在严谨的分析后发现,减速发生在第三阶段,即 bootstrapping 阶段。确定瓶颈后,团队采取了以下几个步骤来解决问题。

  • 完全显示所用时间
    https://developer.android.google.cn/topic/performance/vitals/launch-time#time-full

首先,他们减少了关键启动路径上不需要的网络调用。在拆解后端服务后,他们可以安全地彻底删除启动路径中的一些网络调用,也可以选择异步执行网络调用。如果某些数据在应用运行期间仍然需要,但在应用启动期间不需要它们,这些调用将被设为非阻塞,以允许在没有它们的情况下启动可以继续进行。阻塞的网络调用可以安全地移到后台。最后,他们还选择在会话之间缓存数据。
这些细微的改进使得应用启动时间显著减少了 21%。并且 Lyft Driver 中的打车订单也增加了 5%。有了如此显著的效果,团队得到了足够的支持,专门创建了一个移动设备性能工作流,并新加入了一名工程师以便继续改进应用。这一举措的成功引起了整个团体的注意,几位经理主动联系他们,探讨在改进应用质量方面如何进行进一步投入。


经验与洞察



这些努力的成功带来了几个深刻的洞察,适用于任何团队。

随着应用和团队的发展,应用的优秀体验变得愈发重要。虽然开发者会密切关注应用,并通常在第一时间发现性能存在的问题,但很难引起整个团队的注意。Android Vitals 向开发者提供了一种更直观的方式,用数据支持开发者的分析,使其更容易将性能指标与业务目标相结合。

当您开始准备启动应用质量优化计划时,可以先从小的点入手,再持续改善并着眼于可执行的方向,借助适当的资源取得显著成果。

及时沟通并让团队的其他成员参与开发团队的质量管理工作也很重要。这些关于目标、计划和结果的持续更新将帮助您保持整个团队步调一致,同心协力。

更多资源



Android Vitals 只是 Android 生态系统中用于帮助了解和改善应用启动时间和整体性能的众多工具之一。另一个补充工具是 Jetpack Macrobenchmark,它有助于在开发和测试期间提供各种指标的信息。与提供来自真实用户设备数据的 Android Vitals 相比,Macrobenchmark 允许您在本地对代码的特定区域进行基准测试和特定测试,包括应用启动时间。

  • Jetpack Macrobenchmark
    https://developer.android.google.cn/studio/profile/macrobenchmark#startup


Jetpack 应用启动库提供了一种方法,使得初始化组件在应用启动时更简单、更高效。开发者使用此库来简化启动序列并明确设置初始化顺序。与此同时,"覆盖面和设备" 可以帮助您了解用户和问题分布,以便您更好地决定要针对哪些规格的设备开发应用,要将应用发布到哪些地方,以及要测试的内容。该工具提供的数据使您的团队能够优先考虑应用质量提升,并确定哪些改进能对大多数用户产生更大影响。Perfetto 是另一个宝贵的资源,作为一个开源系统跟踪工具,您可以使用它来检测您的代码和诊断启动问题。总之,这些工具可以帮助您的应用平稳运行,提高用户满意度,并且让您的整个团队都支持您在提升质量方面所做的工作。


  • Jetpack 应用启动库
    https://developer.android.google.cn/topic/libraries/app-startup
  • 覆盖面和设备
    https://play.google.com/console/about/reachanddevices/
  • Perfetto
    http://perfetto.dev


如果您有兴趣让自己的团队参与应用质量优化的计划,请前往官方网站,查看我们针对开发者的案例分享。也欢迎您持续关注 "Android 开发者" 微信公众号,及时了解更多精彩内容和开发者故事

  • 官方网站: 应用质量优化计划
    https://developer.android.google.cn/stories/apps/lyft

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存